package pl;
public class Error extends Throwable {

    public String disfunka;
    public int tipo;
    public nodoToken nodo;

    public Error (String disfunka, int tipo, nodoToken nodo){
        this.disfunka = disfunka;
        this.tipo = tipo;
        this.nodo = nodo;
    }

     @Override
    public String toString(){
         String retorno="";

        switch (tipo) {
            case 2:
                disfunka = muestra_especificacion(disfunka);
            case 3:
                // incluye el error 4
                if (nodo.token.equals("EOF")) {
                    retorno = "Error 4: encontrado final de fichero";
                } else {
                    retorno = "Error 3 (" + nodo.fila + "," + nodo.columna + "): encontrado '" + nodo.cadena + "'";
                }
                retorno += ", esperaba " + disfunka;
                break;
            case 5:
                retorno = "Error 5 (" + nodo.fila + "," + nodo.columna + "): '"+ disfunka + "' ya existe en este ambito";

                break;
            case 6:
                retorno = "Error 6 (" + nodo.fila + "," + nodo.columna + "): '"
                        + disfunka + "' no ha sido declarado";

                break;
            case 7:
                retorno = "Error 7 (" + nodo.fila + "," + nodo.columna + "): '"
                        + disfunka + "' no es una variable";

                break;
            case 8:
                retorno = "Error 8 (" + nodo.fila + "," + nodo.columna + "): '"
                        + disfunka + "' no es un metodo";

                break;
            case 9:
                retorno = "Error 9: 'main' no esta definido";
                break;
        }
        return retorno;

    }
    public String muestra_especificacion(String cadena) {
        String karenina = new String();
        karenina = "";
        String comillas = "class double int main void";

	if (cadena.equals("id"))
	{
		karenina+="identificador";
}else

        if (comillas.contains(cadena)) {

            karenina+="'" + cadena ;
        } else {
            if (cadena.equals("pari")) {
               karenina+="'('";
            } else if (cadena.equals("pard")) {
                karenina+="')'";
            } else if (cadena.equals("pyc")) {
                karenina+="';'";
            } else if (cadena.equals("asig")) {
                karenina+="'='";
            } else if (cadena.equals("llavei")) {
                karenina+="'{'";
            } else if (cadena.equals("llaved")) {
                karenina+="'}'";
            } else {
                karenina+=cadena + "";
            }
        }
        return karenina;
    }

}
